#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
#define endl '\n'
#define int long long
#define pii pair<int, int>
using namespace std;

// 已知

int n, m, x, y, t;
unordered_map<int, int> p;

// 未知
int cnt = 0;

signed main()
{
    cin >> n >> m;
    for (int i = 0; i < m; ++i)
    {
        cin >> x >> y;
        t = (x + y) % n; // 如果两个点起始序号之和相等，就是平行的
        cnt += p[t];     // 第i个点和前他前面和也是t的平行
        p[t]++;          // 和是t的点多了一个
    }
    cnt = m * (m - 1) / 2 - cnt; // 总组合数减去平行的组合数
    cout << cnt;
    return 0;
}